package 链表;

public class LeetCode82删除排序链表中的重复元素 {
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) {
            return null;
        }
        ListNode newHead = new ListNode(0);
        newHead.next = head;

        ListNode prev = newHead;
        ListNode node = prev.next;

        while(node != null) {
            //这里是重复区域的起始位置
            while(node.next != null && node.val != node.next.val) {
                prev = node;
                node = node.next;
            }
            // 来处理重复区域
            while(node.next != null && node.val == node.next.val) {
                node = node.next;
            }
            // 这里说明刚刚跳过了重复元素，要判断一下
            if(prev.next != node) {
                prev.next = node.next;
            }
            // 这里是把最后的那一个重复元素跳过去
            node = node.next;
        }
        return newHead.next;
    }
}
